Docker Compose
複数のDocker コンテナやオプション設定をまとめて管理するようにしたもの
compose.yaml (旧 docker-compose.yaml )がYAML形式の設定ファイル
httpd, DB, App など個別にDockerに封じるのがいいらしい
Dockerのplugin形式(v2)に移行しているようで、独立コマンド型(v1)の入門が多めなので要注意か
docker-compose を docker compose と読み替えればだいたい動く
podman compose, podman-composeもある
Compose系共通仕様
https://compose-spec.io/
Compose File リファレンス
https://docs.docker.jp/reference/compose-file/toc.html
Docker Compose を Linux に
# cd /usr/local/bin
https://github.com/docker/compose/releases/ 最新版を確認
該当するものをダウンロードする
x86_64 は環境別に読み替える RaspberryPi 5 aarch64 など 確認コマンド
# uname -m
aarch64
または
x86_64
# curl -OL https://github.com/docker/compose/releases/download/v2.27.1/docker-compose-linux-x86_64
# chmod +x docker-compose-x86_64
# ln -s docker-compose-x86_64 docker-compose
DOCKER_HOST または /run/docker.sock が適切にunix socket に繋がっていれば Docker でも互換環境でも動作する
Podman用に設定
podman-docker を使うと root では取り敢えず動くがuserでは動かないかも
podman-docker
podman-docker を入れるか DOCKER_HOST っぽい環境変数を指定すればよかったかなので podman-docker を使ってみる
/run/docker.sock などが /run/podman/podman.sock のシンボリックリンクになるとよい
# dnf install -y podman podman-docker
DOCKER_HOST を設定する場合
一般ユーザは podman-docker だけでは unix socket にたどりつけないので DOCKER_HOST を設定することになる
podman info で確認する
$ podman info --format '{{.Host.RemoteSocket.Path}}'
ユーザの場合
/run/user/1000/podman/podman.sock (IDは固有)
rootの場合
/run/podman/podman.sock
$ export DOCKER_HOST=unix:///run/user/1000/podman/podman.sock
これを .profile などの設定ファイルに入れておく
podman-docker , DOCKER_HOST 共通確認
podman.socket が有効になっていなければ有効にする
rootの場合
/run/podman/podman.sock がない
# systemctl enable --now podman.socket
ユーザの場合
/run/user/1000/podman/podman.sock がない (IDは固有)
# systemctl --user enable --now podman.socket
か?
podman compose として使えるのは Podman v4.7ぐらいから RaspberryPiのRasPi OS (bookworm) podman 4.3.1 では駄目だった
RaspberryPi ではしばらく docker-compose として使う